Redundant Array of Independent Disks (RAID)-based systems utilize multiple storage devices to store data in a manner that allows recovery of data in the event that one of the storage devices is corrupted. Certain RAID-based implementations utilize a parity technique whereby a parity value is calculated by performing a logical operation (typically an XOR operation) on a data element from each of at least a subset of the storage devices. The parity value subsequently can be used to determine whether a corresponding storage location of one of the storage devices has been corrupted or has been accessed correctly from the storage device. If identified as corrupted or accessed incorrectly, the correct data element can be recovered using the parity value and the other corresponding data elements.
Conventional RAID-based systems calculate a parity value by accessing a single data element from each storage device in a fixed sequence, storing each data element in a first-in first-out (FIFO) buffer as it is accessed, and pulling each data element out of the FIFO buffer in turn and performing an XOR operation with the data element and the results of the previous XOR operation (with the previously-pulled data element if it is the first XOR operation to calculate a particular parity value). Thus, for N storage devices, a data element size of B bytes, and a read operation of R bytes, conventional RAID-based systems must perform at least N*B/R read operations to obtain N data elements to calculate a parity value. In many implementations, the storage devices are connected via a bus or bus interface common to all of the storage devices and the number and frequency of storage device accesses needed to calculate the parity value or to confirm that a data element has not been corrupted can overwhelm the bandwidth of the bus or bus interface, thereby reducing the efficiency of the processing system in which the RAID-based system is implemented. Accordingly, an improved technique for accessing data elements from storage devices in parity-based RAID-based systems would be advantageous.
The use of the same reference symbols in different drawings indicates similar or identical items.